package com.hyt.it.ogt.kq.service.bm.service;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.kq.service.bm.model.entity.Invoice;
import com.hyt.it.ogt.kq.service.bm.model.vo.InvoiceApply;
import com.hyt.it.ogt.kq.service.bm.model.vo.InvoiceApplyParam;
import com.hyt.it.ogt.kq.service.bm.model.vo.InvoiceApplyVo;
import com.hyt.it.ogt.kq.service.bm.model.vo.InvoiceNotifyEvent;
import com.hyt.it.ogt.kq.service.bm.model.vo.InvoiceParam;
import com.hyt.it.ogt.kq.service.bm.model.vo.InvoiceVo;
import com.hyt.loginfo.model.User;
import com.hyt.model.PageParam;

/**
 * <p>
 * 发票详细信息表 服务类
 * </p>
 *
 * @author liteng
 * @since 2020-08-28
 */
public interface IInvoiceService extends IService<Invoice> {

     IPage<InvoiceVo> queryInvoiceProject(PageParam<InvoiceVo> pageParam, InvoiceParam param);

     IPage<InvoiceVo> queryInvoice(InvoiceParam param);

     void export(InvoiceParam param, HttpServletResponse response);

     IPage<InvoiceApplyVo> queryApplyPage(PageParam<InvoiceApplyVo> pageParam, InvoiceApplyParam param);

     String saveInvoiceApply(InvoiceApply invoiceApply) throws Exception;

     void saveInvoice(List<String> invoiceIds) throws Exception;

     Boolean callBackForInvoice(String invoiceId,InvoiceNotifyEvent invoiceNotifyEvent) throws Exception;

     void saveBackForInvoice(String invoiceId) throws Exception;
     
     Boolean resetInvoiceStatus( User user, String invoiceId) throws Exception;

     List<InvoiceApplyVo> queryOrderDetail(String invoiceId);
}
